perror(), strerror() এর মাধ্যমে Error Messages

Computer Programming - ইউনিক্স সকেট (Unix Socket) Socket Errors এবং তাদের সমাধান (Socket Errors and Their Handling) |
224
224

perror() এবং strerror() ফাংশন দুটি Socket Programming এবং অন্যান্য সিস্টেম প্রোগ্রামিংয়ের ক্ষেত্রে ত্রুটি বার্তা প্রদর্শন করার জন্য ব্যবহৃত হয়। এগুলো ত্রুটির উৎস সম্পর্কে বিস্তারিত এবং ব্যবহারযোগ্য তথ্য প্রদান করে, যা ডিবাগিং এবং ত্রুটি শনাক্ত করতে অত্যন্ত সহায়ক। নিচে perror() এবং strerror() ফাংশনের ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হলো।

1. perror()

perror() ফাংশনটি একটি সহজ পদ্ধতি, যা সিস্টেম ত্রুটি (যেমন, সিস্টেম কল বা লাইব্রেরি ফাংশনের ত্রুটি) শনাক্ত করে এবং সঠিক ত্রুটি বার্তা প্রদর্শন করে। এটি errno এর মান ব্যবহার করে কাজ করে এবং বার্তার শেষে ত্রুটির ব্যাখ্যা প্রদান করে।

perror() এর সিগনেচার (C ভাষায়)

void perror(const char *message);
  • message: ব্যবহারকারীর প্রদত্ত একটি বার্তা, যা ত্রুটির সাথে সম্পর্কিত তথ্য দেয়।
  • এই বার্তার পরে perror() errno এর মান অনুযায়ী সিস্টেম ত্রুটি প্রদর্শন করে।

perror() এর উদাহরণ (C ভাষায়)

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <errno.h>

int main() {
    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) {
        perror("Socket creation failed");
        exit(EXIT_FAILURE);
    }
    return 0;
}
  • এখানে, যদি Socket তৈরি করতে সমস্যা হয়, তাহলে perror() ফাংশন Socket creation failed: বার্তা প্রদর্শন করবে এবং এর সাথে errno এর মান অনুযায়ী ত্রুটি সম্পর্কে বিস্তারিত তথ্য দেখাবে, যেমন:
Socket creation failed: Address already in use

কেন perror() গুরুত্বপূর্ণ:

  • এটি ত্রুটির বার্তা সংক্ষিপ্ত এবং স্পষ্টভাবে প্রদর্শন করে, যা দ্রুত সমস্যা শনাক্ত করতে সহায়ক।
  • এটি স্বয়ংক্রিয়ভাবে errno এর মান পড়ে এবং সিস্টেম ত্রুটির জন্য উপযুক্ত বার্তা প্রদান করে।

2. strerror()

strerror() ফাংশনটি errno ত্রুটি কোডের উপর ভিত্তি করে একটি বিস্তারিত ত্রুটি বার্তা প্রদান করে। এটি একটি স্ট্রিং ফিরিয়ে দেয়, যা ব্যবহারকারী কাস্টম বার্তা বা লগ ফাইলে ব্যবহার করতে পারেন।

strerror() এর সিগনেচার (C ভাষায়)

char *strerror(int errnum);
  • errnum: errno ত্রুটি কোড বা অন্য কোনো নির্দিষ্ট ত্রুটি কোড।
  • এটি একটি String ফেরত দেয়, যা ত্রুটির বিস্তারিত ব্যাখ্যা প্রদান করে।

strerror() এর উদাহরণ (C ভাষায়)

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>

int main() {
    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) {
        printf("Error: %s\n", strerror(errno));
        exit(EXIT_FAILURE);
    }
    return 0;
}
  • এখানে, যদি Socket তৈরি করতে সমস্যা হয়, তাহলে strerror(errno) ত্রুটি কোডের উপর ভিত্তি করে একটি String প্রদান করবে, যা ত্রুটির বিস্তারিত তথ্য দেখাবে, যেমন:
Error: Address already in use

কেন strerror() গুরুত্বপূর্ণ:

  • strerror() ব্যবহার করে কাস্টম বার্তা তৈরি করা যায় এবং ত্রুটি লগ ফাইলে সংরক্ষণ করা যায়, যা ডিবাগিং এবং অ্যাপ্লিকেশন মনিটরিংয়ে সহায়ক।
  • এটি আরও ফ্লেক্সিবল, কারণ এটি errno ছাড়াও অন্য কোনো ত্রুটি কোডও গ্রহণ করতে পারে, যার ফলে বিভিন্ন পরিস্থিতিতে এটি ব্যবহার করা যায়।

perror() বনাম strerror()

বৈশিষ্ট্যperror()strerror()
ব্যবহারত্রুটি বার্তা সরাসরি প্রিন্ট করে।ত্রুটির জন্য একটি String ফেরত দেয়।
ইনপুটব্যবহারকারীর প্রদত্ত বার্তা এবং errnoerrno বা নির্দিষ্ট ত্রুটি কোড।
ফ্লেক্সিবিলিটিসরাসরি প্রিন্টিং এর জন্য সহজ।কাস্টম বার্তা বা লগিংয়ের জন্য ব্যবহারযোগ্য।
ফর্ম্যাটmessage: system error messageকেবল সিস্টেম ত্রুটির বার্তা ফিরিয়ে দেয়।

perror() এবং strerror() একত্রে ব্যবহার করার উদাহরণ

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>

void log_error(const char *message) {
    FILE *logfile = fopen("error_log.txt", "a");
    if (logfile) {
        fprintf(logfile, "%s: %s\n", message, strerror(errno));
        fclose(logfile);
    }
}

int main() {
    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) {
        perror("Socket creation failed");
        log_error("Socket creation failed");
        exit(EXIT_FAILURE);
    }
    return 0;
}
  • এই উদাহরণে, perror() সরাসরি ত্রুটি বার্তা প্রদর্শন করে, এবং strerror() একটি String ফিরিয়ে দিয়ে ত্রুটি বার্তা লগ ফাইলে সংরক্ষণ করে। এটি ত্রুটি চেকিং এবং লগিংয়ের জন্য একটি কার্যকর পদ্ধতি।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion